前面講了那麼多網路、封包、協定之類的
今天我們來講講可用的分析工具
Wireshark(舊稱 Ethereal)是一個開源、跨平台的網路封包剖析器,可即時從網路介面擷取封包中的資料,Wireshark 是目前最強大的流量分析工具之一,廣泛應用於網路診斷、安全分析和協議研究
幾乎是「任何你能抓的封包,它都能打開」
不只網路流量,像藍牙、USB 封包、甚至 VoIP(網路語音)都可以用 Wireshark 分析
Tcpdump 是一個用於擷取和分析網路封包的命令列工具,它能即時顯示經過網路介面卡的資料流量,讓使用者檢視協定、來源、目的地、封包內容等資訊
基於 libpcap 函式庫,它可以在大部分類 Unix 系統(Linux、macOS、BSD)上使用
下面來講一下Tcpdump的基本指令
$ tcpdump //擷取網卡上的所有封包
$ tcpdump -i eth0 //擷取指定INTERFACE的封包
$ tcpdump -c 10 //只擷取10個封包
$ tcpdump -w/r FILE //將資料包寫入文件/從檔案讀取資料包
這邊提一嘴 INTERFACE 因為發現之前沒講過😱
指的就是電腦與網路之間的連接點
如何查看有哪些介面?
$ tcpdump -D
$ tcpdump -i eth0 host HOSTNAME/IP //案主機名/IP過濾封包
$ tcpdump port PORT_NUMBER //按連接埠號過濾資料包
$ tcpdump src/dst host IP //根據特定來源/目標主機過濾
對於過濾封包的條件有時可能不只一條,這時候就可以用這幾個運算子來讓過濾條件更詳細
and:捕獲兩個條件都成立的資料包
or:當任一條件成立時捕獲資料包
not:當條件不成立時捕獲資料包
$ tcpdump src host 192.168.1.10 and dst port 80 //來源 IP = 192.168.1.10 且目的埠 = 80 的封包
$ tcpdump dst port 80 or dst port 443 //送往 80 或 443 (HTTP/HTTPS) 的封包
$ tcpdump not host 192.168.1.1 //捕獲所有封包,但排除 192.168.1.1 的來源或目的
# --------合用的樣子-------
$ tcpdump src net 10.0.0.0/8 and not dst port 22 //捕獲來源在 10.0.0.0/8 網段,但不是送往 22 (SSH) 的封包
控制輸出的格式,是否顯示更詳細的封包內容
$ tcpdump -n //不解析主機名
$ tcpdump -nn //不解析主機名與埠號
$ tcpdump -v //詳細模式(-vv:更詳細模式、-vvv:最詳細模式)
$ tcpdump -q //快速輸出(簡化封包內容顯示)
$ tcpdump -e //顯示資料鏈路層標頭(例如 MAC 位址)
$ tcpdump -A //以 ASCII 顯示封包
$ tcpdump -xx //以16進位顯示封包
$ tcpdump -X //16進位與 ASCII 同時顯示封包標頭與資料
$ tcpdump -i any greater 100 //過濾長度>=100 bytes
$ tcpdump -i any less 100 //過濾長度<=100 bytes
常用的 TCP 標誌包括:
$ tcpdump 'tcp[tcpflags] & tcp-syn != 0' // 顯示 SYN 封包(建立連線請求)
$ tcpdump 'tcp[tcpflags] & tcp-fin != 0' // 顯示 FIN 封包(連線終止請求)
$ tcpdump 'tcp[tcpflags] & (tcp-syn|tcp-ack) == (tcp-syn|tcp-ack)' // 顯示 SYN+ACK 封包(連線響應)
今天先講兩個工具,明天講Nmap
之後再給三個工具比較一下他們之間有什麼關係